In the field of data switching, the performance of data switching nodes participating in data transport networks is of utmost importance.
In provisioning data transport services, data is conveyed between data network nodes as specified by data transport protocols used. A body of data is typically generated by a source data network node and is forwarded through a data transport network by data switching equipment via associated interconnected data transport links towards a destination data network node. The data is encapsulated in Protocol Data Units or Payload Data Units (PDUs) as per corresponding data transport protocol specification.
In accordance with at least one data transfer protocol, the conveyed data is encapsulated in PDUs along with routing information. PDUs include and are not limited to: cells, frames, packets, etc. Each PDU has a size. Cells have a fixed size while frames and packets can vary in size.
Each PDU includes: a payload part holding at least a portion of the body of data to be conveyed; and a header part holding routing information, PDU processing parameters, etc. At least a portion of header information is consulted at each data switching node along the transport path to determine a route via which to forward PDUs towards the destination data network node. The PDU can be forwarded towards a group of destination data network nodes as is the case for multicast data traffic.
The header information includes specifiers detailing: the type of PDU, the size of the PDU, the size of the payload, the size and structure of the header, the source data network node, the destination data network node(s), other special instructions in processing the PDU such as a forwarding priority, a Class-of-Service, etc.
From a data transport network's point of view, data is conveyed in the data transport network hop-by-hop for the duration of a data transport session between data network nodes. PDUs are received by data switching nodes the via data transport links connected thereto and are processed to determine data transport links via which to convey the PDUs towards their intended destination.
From a data switching node's point of view, data switching nodes are multi-ported data network nodes which forward PDUs between input ports and output ports. The forwarding of PDUs represents the switching function of the data switching node. The basic operation of a data switching node includes: receiving at least one PDU, storing the PDU in a memory store while an appropriate output port is determined, determining the output port, scheduling the PDU for transmission, and transmitting the PDU via the determined output port. In the data transport field this is known as a “store and forward” method of operation of data switching nodes. Although the operation of data switching nodes is conceptually simple, the implementation of such devices is not trivial.
The storage of PDUs in the memory store provides a speed matching function as input ports, output ports and the switching function operate at different data processing rates. For this reason the memory store is also known as a memory buffer.
The storage of PDUs in the memory store also enables the gathering of data flow statistics (statistics generation function) in support of data flow control in policing the use of data transport resources.
The memory store itself represents a limited resource in processing PDUs because it has a limited size. If a PDU arrives at a data switching node and the memory store resources are exhausted, then the PDU has to be discarded. Efficient data transport attempts to minimize PDU discard instances.
One solution is to increase the size of the memory storage resources available to data switching nodes. Increasing the size of the memory storage resources comes with: increased complexity of the design of data switching nodes, increased development costs, increased component costs, increased maintenance costs, etc. Driving trends in the field of data switching call for stricter Quality-of-Service (QoS) requirements to be imposed on data flows as, ever increasing data throughput rates are demanded. Increasing memory storage resources at data switching nodes is a short term solution.
In attempting to diminish the occurrence of PDU discard instances, data switching nodes have been adapted to effect data flow control. As such, the statistics gathering function of data switching nodes is used to categorize PDUs according to associated data flows. The data flows are conveyed in accordance with specified enforceable data flow parameters. Heuristics are used to decide whether to forward, discard PDUs or regulate data flows at data switching nodes.
An example of a PDU forwarding rule specifies that PDUs should not be discarded from data flows that are well-behaved. Data flows which monopolize memory storage resources are considered to misbehave.
Typical data switching node designs include the use of a shared memory buffer for all data flows conveyed. This arrangement is referred to in the art as a shared memory switch architecture.
The use of a shared memory buffer makes fulfilling the requirement of not discarding PDUs associated with well-behaving data flows difficult due to the fact that the design leads to a phenomenon known in the art as blocking.
A blocking condition exists when one particular data flow uses all of the shared memory resources available and the data switching node is forced to discard incoming PDUs, including PDUs associated with well-behaved data flows.
When flow control is enabled for an input port and a PDU arrives at the data switching node having limited memory storage resources, the receiving input port is directed to issue a flow control pause command message upstream, causing data network nodes upstream of the data switching node to temporarily stop transmitting data.
For example, in accordance with the current specification of flow control enforcement found in Annex 31A of the 802.3 IEEE Standard 1998, all data flows conveying data via the input port effecting flow control are affected and required to temporarily halt transmission, including well-behaved data flows.
In supporting QoS, PDUs are also characterized with respect to Class-of-Service/forwarding priorities specified in PDU's header. QoS guarantees, which are also enforced at data switching nodes, cannot be guaranteed when flow control is active since the use of the pause command in the current specification of flow control causes all data flows to stop transmitting including well-behaved data flows. Therefore flow control is inherently at odds with assuring Quality-of-Service (QoS).
As another example of a PDU forwarding rule, PDUs should not be discarded from data flows that have high forwarding priorities. A similar problem, as explained above with respect to well behaved data flows, exists for data flows having a high forwarding priority in that: high forwarding priority PDUs arriving at a congested data switching node may be discarded because of low forwarding priority PDUs taking up shared memory buffer resources.
A prior art publication entitled “Data Networks”—2nd Edition which was published in 1992 by D. Bertsekas and R. Gallager, pp. 496–498, describes theoretical methods of implementing buffer management through rationing a shared buffer space. The presented approach is to divide the total shared buffer space into numerous reserved regions and one shared pool. The reserved regions ensure a small amount of buffer space for each data flow or Class-of-Service (CoS), so that even under conditions of congestion, well-behaved flows have guaranteed buffer space.
Although the presented methods provide theoretical methods of buffer management, in practice once the shared buffer space is filled all data flows may be subject to congestion. In theory it is assumed that once the shared buffer space is filled, the most likely data flow to convey a PDU next is a misbehaving data flow and therefore become subject to flow control. In practice well-behaving data flows convey data at or below service level agreement specified data throughput levels and in a large number of cases may have throughputs larger than misbehaving data flows. All data flows conveyed via the data switching node, including well-behaved data flows are subject to throughput variations, with the shared buffer space exhausted, variations in data throughput albeit minimal, detrimentally exposes the well-behaved data flows to flow control.
Therefore methods and data switching architectures are need to reduce blocking instances to minimal occurrence levels.